from typing import Optional

from pydantic import Field
from pydantic_settings import BaseSettings


class S3StorageConfig(BaseSettings):
    """
    S3 storage configs
    """

    S3_ENDPOINT: Optional[str] = Field(
        description='S3 storage endpoint',
        default=None,
    )

    S3_REGION: Optional[str] = Field(
        description='S3 storage region',
        default=None,
    )

    S3_BUCKET_NAME: Optional[str] = Field(
        description='S3 storage bucket name',
        default=None,
    )

    S3_ACCESS_KEY: Optional[str] = Field(
        description='S3 storage access key',
        default=None,
    )

    S3_SECRET_KEY: Optional[str] = Field(
        description='S3 storage secret key',
        default=None,
    )

    S3_ADDRESS_STYLE: str = Field(
        description='S3 storage address style',
        default='auto',
    )

    S3_USE_AWS_MANAGED_IAM: bool = Field(
        description='whether to use aws managed IAM for S3',
        default=False,
    )
